# 、写函数,将传入的列表或元祖对象的奇数位索引对应的元素,
# list1 =[1,2,3,4,5,6]
# def nnn(a):
#     for i in range(len(a)):
#         if i%2 == 0:
#             print(a[i])
# nnn(list1)

# 2、写函数,判断用户传入的对象(string,list,tuple)长度是否大于5
# list2= [1,2,3,4,5.6,4]
# str2 = "iadshaihdaujil"
# typle2 = {1,2,3,4,2,5,4,4,3}
# def n2(a,b,c):
#     if len(a)>4:
#         print("大于1")
#     if len(c)>4:
#         print("大2")
#     if len(b)>4:
#         print("大于3")
# n2(list2,str2,typle2)
# 3、写函数,计算传入的string中,数字,字母,空格以及其它内容的个数,并返回结果
# str1 ="sadygucilsqsdhauildijh124324   iwqdjsiwodah"
# def n3(a):
#     str = 0
#     num = 0
#     kongge = 0
#     for i in range(len(a)):
#         if a[i]>"0" and a[i]<"9":
#             num=num+1
#         if a[i]>'a' and a[i]<'z':
#             str= str+1
#         if a[i] == " ":
#             kongge = kongge+1
#     return num,str,kongge
# print(n3(str1))
#


# 4、写函数,接收两个数字参数,返回较大的那个数字
# def n4(a,b):
#     if a>b:
#         return a
#     else:
#         return b
# print(n4(10,50))
# 5、编写一个函数cacluate, 可以接收任意多个数,返回的是一个元组.
# 元组的第一个值为所有参数的平均值, 第二个值是大于平均值的所有数.

# def c(*a):
#     a = list(a)
#     avg = sum(a) / len(a)
#     a.insert(0, avg)
#     maxi= max(a)
#     a.remove(maxi)
#     a.insert(1, maxi)
#     print(a)
# c(2, 4, 11, 11, 10, 7)
# 6、编写一个函数, 接收字符串参数, 返回一个元组,
# 元组的第一个值为大写字母的个数, 第二个值为小写字母个数.
# def daxue(string):
#     d = 0
#     x = 0
#     for i in string:
#         if 'a' <= i <= 'z':
#             x += 1
#         elif 'A' <= i <= 'Z':
#             d += 1
#     return d,x
#
# print(daxue('asadjasdahdUHDAUJKDHD'))
# 7、编写函数, 接收一个列表(包含30个1~100之间的随机整形数)
# 和一个整形数k, 返回一个新列表.
# 函数需求:
# 将列表下标k之前对应(不包含k)的元素逆序;
# 将下标k及之后的元素逆序;
# def func(list1, k):
#     list2 = []
#     list3 = []
#     for i in list1:
#         if i < k:
#             list2.append(i)
#         else:
#             list3.append(i)
#     list2 = list2[::-1]
#     list3 = list3[::-1]
#     list2.extend(list3)
#     return list2
#
#
# list1 = [1,2,3,4,6,3,2,2,4,5,6,4,4,5,4,5,6,5,43,5,6,4,56,54,4,655]
# k = 15
# print(func(list1, k))
# 8、编写函数，从键盘输入参数x和n，计算并显示形如x+xx +xxx + xxxx + xxxxx+xxx…xxx+ 的表达式前n项的值
# def s1(x,n):
#     sum = 0
#     a = 0
#     for i in range(n):
#         sum = x + sum
#         x = x * 10
#         a= sum+a
#         print(sum)
#     return a
# print(s1(int(input("输入第一个数")), int(input("输入第二个数"))))
# 9、写函数,函数接收的4个参数分别是:姓名,性别(默认为男),年龄,地址
# def enroll(name,age,city,sex="男"):
#     print(name,sex,age,city)
# enroll(1,2,3)
# 用户通过input输入这4个内容(支持持续输入,Q或q退出),并传递给函数
#
# 函数接收到这些内容,将其追加到student_msg文件中
#
# 重点:复习文件操作
#
# import os
# def func(name, age, adress, sex='男'):
#     with open('./student.txt', "w", encoding='utf-8') as f:
#         f.write(name)
#         f.write(age)
#         f.write(adress)
#         f.write(sex)
#
#
# def main():
#     print('输入Q退出')
#     print('输入R填写')
#     return input('请输入')
#
#
# while True:
#     option = main()
#     if option == 'R':
#         name = input('请输入姓名')
#         age = input('请输入年龄')
#         adress = input('请输入地址')
#         func(name,age,adress)
#         continue
#     if option == 'Q':
#         print('退出')
#         break
# 10、写函数,接收n个数字,返回这些数字的和(动态传参)
# list2=[1,2,3,4,4,5,6,7]
# def he111(a):
#     sum=0
#     for i in a:
#         sum = sum +i
#     return sum
#
#
# print(he111(list2))
# 11、在实参中传入多个可迭代对象(要有string,list,tuple,set,dict),将每个对象的每个元素都加到args或kwargs里
# def func(*args, **kwargs):
#     print(args)
#     print(kwargs)
#
#
# func(1,2,3,"usiahiadhu",12,"ijasjadoi",[1,2,3],[1,2,3,8],a=22,b=12)
# 12、写函数,把传过来的列表中的每一个元素都用"_"拼接,并返回
# list = [1,2,3,4,5]
#
# def pinjie(a):
#     string1 =""
#     for i in range(len(a)):
#         string1= string1+str(a[i])
#         if i!=len(a)-1:
#             string1 = string1 + '_'
#     print(string1)
# pinjie(list)

# 13、写函数,传入一个数字,返回这个数的阶乘
# 重点:累乘
#
# 示例：1x2x3....

# def chengfa(n):
#     a=1
#     for i in range(1,n+1):
#         a= i*a
#     return a
# print(chengfa(int(input("请输入一个数"))))

# 14、写函数,返回一个扑克牌列表,里面有52项,每一项都是一个tuple
# def func():
#     str = '2 3 4 5 6 7 8 9 10 J Q K A 大王 小王'
#     str = str.split(' ')
#     str_color = ['黑桃', '红桃', '梅花', '方片']
#
#     list1 = []
#     card = tuple()
#     for i in str:
#         if i not in ['大王', '小王']:
#             for j in str_color:
#                 card = (i, j)
#                 list1.append(card)
#         else:
#             list1.append(i)
#     for i in list1:
#         if list1.count(i) > 1:
#             list1.remove(i)
#
#     print(list1)
#     print(len(list1))
#
#
# func()
# 15、用代码写一个99乘法表
# def chengfa():
#     for i in range(1, 10):
#         for j in range(1, i+1):
#             print(f"{j} × {i} = {i*j}", end="  ")
#         print()
# chengfa()
# 16、编写函数，求1+2+3+…N的和
# n = int(input("请输入一个数n"))
#
# def qiuhe(a):
#     sum = 0
#     for i in range(a+1):
#         sum =sum +i
#     print(sum)
# qiuhe(n)
# 17、编写一个函数，求多个数中的最大值
# list1= [1,2,3,4,5,2,3,7,4,5,6,1]
#
# def sum1(a):
#     sum = 0
#     for i in a:
#         if i>sum:
#             sum=i
#     print(sum)
# sum1(list1)
# 18、编写一个函数，提取指定字符串中所有的字母，然后拼接在一起产生一个新的字符串
# list1="jkahdskj"
# list2="hjdakahdkjwah"
# def pinjie1(a,b):
#     list3 = ""
#     list3= a+b
#     print(list3)
# pinjie1(list1,list2)
# 19、 定义一个学生注册函数enroll()，打印学生姓名，性别，年龄，城市， 使用默认参数降低调用函数的复杂度
# def enroll(name="wu",sex="男",age=20,city="沈阳"):
#     print(name,sex,age,city)
# enroll(1,2,3)
# 20、编写一个函数，接受一个字符串作为参数，并返回其中所有单词的首字母的大写形式
# str1="khjksdhljhalj"
# str2=""
# def strup(a):
#     for i in range(len(str1)):
#         if i ==0:
#             str2= str1[i].upper()
#     print(str2)
# strup(str1)
# 21、写一个函数，求多个数的平均值
# list2 = [1,2,3,4,543,33,2,2,3,3,1]
# def qiuhe(a):
#     sum = 0
#     avg1= 0
#     for i in list2:
#         sum = i+sum
#     avg1= sum/len(list2)
#     print(avg1)
# qiuhe(list2)
# 22、写一个自己的len函数，统计指定序列中元素的个数
# list2= [1,1,2,3,4,45,5,1]
# sun = 0
# def sum1(lis):
#     sun = len(lis)
#     return sun
# print(sum1(list2))
# 23、找出传入的列表或元组的奇数位对应的元素，并返回一个新的列表
# list2= [1,2,3,5342,3,43,5,3,1]
# list3=[]
# def jishu(k):
#    for i in range(len(k)):
#        if i%2 == 0:
#             list3.append(k[i])
# jishu(list2)
# print(list3)
# 24、编写一个函数，接受一个字符串列表作为参数，并返回一个字符串，其中包含所有字符串首字母的大写形式
# def upstr(str_list):
#     result = ""
#     for string in str_list:
#         result += string[0].upper()
#     return result
#
# list111 = ["apple", "banana", "cherry","ori"]
# print(upstr(list111))

# 25、定义函数，有一个形参，传入的是列表，数组大小不超过 100个，
# # 数组中的每个元素值不允许超过 100，但是可以等于100，
# # 如果列表大小超过了100个截取到第100个为止，要求返回的列表格式：
# # 删除所有重复元素，使得每个元素只出现一次
# # 按照数字的大小，由高到低排序返回
# def process_list(lst):
#     lst = lst[:100]
#     lst = list(set(lst))
#     lst.sort(reverse=True)
#     return lst
#
# # 测试样例
# input_list = [1, 2, 3, 4, 5, 5, 4, 3, 2, 1]
# result = process_list(input_list)
# print(result)
# 26、定义函数 getLength，打印用户传入的容器类型和数据长度
# list=[1,2,3,4,5]
# def detlength(a):
#     print(type(a))
#     print(len(a))
# detlength(list)
# 27、定义函数 generateNum( )
# # 返回从0~9的十个数字中随机取出4个不重复的数字组成一个字符串
# import  random
# s = []
# def generateNum():
#     while (len(s)<4):
#         x=random.randint(0,9)
#         if x not in s:
#             s.append(x)
#     return s
# print(generateNum())
# 28、定义函数 moreThan(num)，判断输入的数字是否大于1500
# def moreThan(num):
#     if num>1500:
#         print("大于")
#     else:
#         print("不大于")
# moreThan(15222)
# 29、定义函数，有两个形参，第一个形参到第二个形参的范围，所有平方数之和
# 示例：func_a(5,10)
# 5x5+6x6+7x7+8x8+9x9+10x10...
#

# def he(a,b):
#     sum=0
#     for i in range(a,b+1):
#       sum=sum+i*i
#     return sum
#
#
# print(he(5, 10))
# 30、写函数，检查传入字典的每一个value长度，如果大于2，
# # 那么仅保留前两个长度的内容， 并将新内容返回给调用者
# def check(dict1):
#     for key,value in dict1.items():
#         if len(str(value))>2:
#             dict1[key]= str(value)[:2]
#     return dict1
# dict1 = {
#     "name": "Alice",
#     "age": 25,
#     "city": "Beijing"
# }
# print(check(dict1))
# 31、写函数，判断用户传入的对象（字符串、列表、元组）的元素是否为空
# def strde(a):
#     if a:
#         print("不是空的")
#     else:
#         print("空的")
# strde("hjailhkb")
# 32、编写自定义函数，完成一个简单的减法运算函数
# def jianfa(a,b):
#     return a-b
#
#
# print(jianfa(4, 5))
# 33、编写自定义函数，可以输出自己的名字即可。
# def name(a):
#     print(a)
# name(input("输入你的名字"))
# 34、编写自定义函数：剪刀石头布
# 游戏开始，初始状态下用户和电脑都有 100 分，赢一局+10 分，输一局-10 分。
# 当用户为 0 分时，游戏结束，提示游戏结束，比赛输了
# 当用户为 200 分时，游戏结束，提示游戏结束，赢得比赛、每轮比赛都输出当前的分数
# 1 代表剪刀 2 代表石头 3 代表布
# import random
#
#
# def game():
#     user_score = 100
#     computer_score = 100
#
#     while True:
#         user_choice = int(input("请输入您的选择（1代表剪刀，2代表石头，3代表布）："))
#         computer_choice = random.randint(1, 3)
#
#         if user_choice == computer_choice:
#             print("平局！")
#         elif (user_choice == 1 and computer_choice == 3) or \
#                 (user_choice == 2 and computer_choice == 1) or \
#                 (user_choice == 3 and computer_choice == 2):
#             print("您赢了这一局！")
#             user_score += 10
#             computer_score -= 10
#         else:
#             print("您输了这一局！")
#             user_score -= 10
#             computer_score += 10
#
#         print("当前分数：用户 {} 分，电脑 {} 分".format(user_score, computer_score))
#
#         if user_score == 0:
#             print("游戏结束，比赛输了！")
#             break
#         elif user_score == 200:
#             print("游戏结束，赢得比赛！")
#             break


# game()

# 35、编写一个函数，接受一个字符串作为参数，并返回该字符串的逆序字符串
# str1= "ksahdlhabskdjhilcjasbkc"
# str2=""
# def strend(string1):
#     str2=str1[::-1]
#     return str2
# print(strend(str1))
# 36、编写一个函数，接受一个数字列表作为参数，并返回其中所有偶数的列表
# list2=[1,2,3,4,5,3,2,4]
# list3=[]
# def our(lis):
#     for i in lis:
#         if i%2==0:
#             list3.append(i)
#     return list3
#
#
# print(our(list2))
# 37、编写一个函数，接受一个字符串列表作为参数，并返回其中最长的字符串。
# list2= ["jkadhskahdk","jkhadskjbasdj","uiadhuiigyudygysuiawghaiw"]
# def zuichang(z):
#     k=""
#     for i in z:
#         if len(i)>len(k):
#             k=i
#     return k
# print(zuichang(list2))
# 38、编写一个函数，接受一个数字列表作为参数，并返回其中所有数字的平方的总和
# list1=[1,1,2,2,4,5,6]
# def pingfang(i):
#     sum = 0
#     for n in i:
#         sum = n*n+sum
#     return sum
# print(pingfang(list1))
# 39、编写一个函数，接受一个整数作为参数，并返回其阶乘
# def jiecheng(n):
#     a=1
#     for i in range(1,n+1):
#         a= i*a
#     return a
# print(jiecheng(int(input("请输入一个数"))))